package ar.com.tallerdos.smartdinner.model;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Date;

import com.google.gson.annotations.Expose;

@SuppressWarnings("serial")
public class Pedido implements Serializable, Identity {    

    public static final String CODIGO_COLUMNA = "codigo";
    
    public enum PedidoEstado {
	Nuevo, Pendiente, Comenzado, Terminado, Cancelado
    }

    @Expose
    private Integer id;

    @Expose
    private Producto producto;

    @Expose
    private Integer cantidad;

    @Expose
    private Date fechaAlta;

    @Expose
    private PedidoEstado estado;
    
    @Expose
    private Comida comida;
    
    private Integer codigo;
    
    public Pedido() {
	estado = PedidoEstado.Nuevo;
	fechaAlta = new Date();
	cantidad = 1;
    }

    public Integer getId() {
	return id;
    }

    public void setId(Integer id) {
	this.id = id;
    }

    public Date getFechaAlta() {
	return fechaAlta;
    }

    public void setFechaAlta(Date fechaAlta) {
	this.fechaAlta = fechaAlta;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public PedidoEstado getEstado() {
        return estado;
    }

    public void setEstado(PedidoEstado estado) {
        this.estado = estado;
    }

    public Comida getComida() {
        return comida;
    }

    public void setComida(Comida comida) {
        this.comida = comida;
    }
    
    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    @Override
    public String toString() {	
	if (producto != null && cantidad != null && producto.getPrecio() != null) {
	    NumberFormat formatter = new DecimalFormat("#0.00");
	    return producto.toString() + ": $" + formatter.format(producto.getPrecio()*cantidad);
	}
        return "";
    }

}
